namespace BDFramework.Editor
{
    using UnityEditor;
    using UnityEngine;

    public sealed class GUIStyleExampleWindow : EditorWindow
    {
        private static readonly string[] mList =
        {
            "AboutWIndowLicenseLabel",
            "AC LeftArrow",
            "AC RightArrow",
            "AnimationCurveEditorBackground",
            "AnimationEventBackground",
            "AnimationEventTooltip",
            "AnimationEventTooltipArrow",
            "AnimationKeyframeBackground",
            "AnimationRowEven",
            "AnimationRowOdd",
            "AnimationSelectionTextField",
            "AnimationTimelineTick",
            "AnimPropDropdown",
            "AppToolbar",
            "AS TextArea",
            "BoldLabel",
            "BoldToggle",
            "ButtonLeft",
            "ButtonMid",
            "ButtonRight",
            "CN Box",
            "CN CountBadge",
            "CN EntryBackEven",
            "CN EntryBackOdd",
            "CN EntryError",
            "CN EntryInfo",
            "CN EntryWarn",
            "CN Message",
            "CN StatusError",
            "CN StatusInfo",
            "CN StatusWarn",
            "ColorField",
            "ColorPicker2DThumb",
            "ColorPickerBackground",
            "ColorPickerBox",
            "ColorPickerHorizThumb",
            "ColorPickerVertThumb",
            "Command",
            "CommandLeft",
            "CommandMid",
            "CommandRight",
            "ControlLabel",
            "CurveEditorLabelTickmarks",
            "debug_layout_box",
            "dockarea",
            "dockareaOverlay",
            "dockareaStandalone",
            "dragtab",
            "dragtabbright",
            "dragtabdropwindow",
            "DropDown",
            "DropDownButton",
            "ErrorLabel",
            "ExposablePopupItem",
            "ExposablePopupMenu",
            "EyeDropperHorizontalLine",
            "EyeDropperPickedPixel",
            "EyeDropperVerticalLine",
            "flow background",
            "flow navbar back",
            "flow navbar button",
            "flow navbar separator",
            "flow node 0",
            "flow node 0 on",
            "flow node 1",
            "flow node 1 on",
            "flow node 2",
            "flow node 2 on",
            "flow node 3",
            "flow node 3 on",
            "flow node 4",
            "flow node 4 on",
            "flow node 5",
            "flow node 5 on",
            "flow node 6",
            "flow node 6 on",
            "flow node hex 0",
            "flow node hex 0 on",
            "flow node hex 1",
            "flow node hex 1 on",
            "flow node hex 2",
            "flow node hex 2 on",
            "flow node hex 3",
            "flow node hex 3 on",
            "flow node hex 4",
            "flow node hex 4 on",
            "flow node hex 5",
            "flow node hex 5 on",
            "flow node hex 6",
            "flow node hex 6 on",
            "flow node titlebar",
            "flow overlay area left",
            "flow overlay area right",
            "flow overlay box",
            "flow overlay foldout",
            "flow overlay header lower left",
            "flow overlay header lower right",
            "flow overlay header upper left",
            "flow overlay header upper right",
            "flow shader in 0",
            "flow shader in 1",
            "flow shader in 2",
            "flow shader in 3",
            "flow shader in 4",
            "flow shader in 5",
            "flow shader node 0",
            "flow shader node 0 on",
            "flow shader out 0",
            "flow shader out 1",
            "flow shader out 2",
            "flow shader out 3",
            "flow shader out 4",
            "flow shader out 5",
            "flow target in",
            "flow triggerPin in",
            "flow triggerPin out",
            "flow var 0",
            "flow var 0 on",
            "flow var 1",
            "flow var 1 on",
            "flow var 2",
            "flow var 2 on",
            "flow var 3",
            "flow var 3 on",
            "flow var 4",
            "flow var 4 on",
            "flow var 5",
            "flow var 5 on",
            "flow var 6",
            "flow var 6 on",
            "flow varPin in",
            "flow varPin out",
            "flow varPin tooltip",
            "Foldout",
            "FoldOutPreDrop",
            "GameViewBackground",
            "Grad Down Swatch",
            "Grad Down Swatch Overlay",
            "Grad Up Swatch",
            "Grad Up Swatch Overlay",
            "grey_border",
            "GridList",
            "GridListText",
            "GridToggle",
            "GroupBox",
            "GUIEditor.BreadcrumbLeft",
            "GUIEditor.BreadcrumbMid",
            "GV Gizmo DropDown",
            "HeaderLabel",
            "HelpBox",
            "Hi Label",
            "HorizontalMinMaxScrollbarThumb",
            "hostview",
            "IN BigTitle",
            "IN BigTitle Inner",
            "IN ColorField",
            "IN DropDown",
            "IN Foldout",
            "IN FoldoutStatic",
            "IN Label",
            "IN LockButton",
            "IN ObjectField",
            "IN Popup",
            "IN SelectedLine",
            "IN TextField",
            "IN ThumbnailSelection",
            "IN ThumbnailShadow",
            "IN Title",
            "IN TitleText",
            "IN Toggle",
            "InnerShadowBg",
            "InvisibleButton",
            "LargeButton",
            "LargeButtonLeft",
            "LargeButtonMid",
            "LargeButtonRight",
            "LargeDropDown",
            "LargeLabel",
            "LargePopup",
            "LargeTextField",
            "LightmapEditorSelectedHighlight",
            "ListToggle",
            "LockedHeaderBackground",
            "LockedHeaderButton",
            "LockedHeaderLabel",
            "LODBlackBox",
            "LODCameraLine",
            "LODLevelNotifyText",
            "LODRendererAddButton",
            "LODRendererButton",
            "LODRendererRemove",
            "LODRenderersText",
            "LODSceneText",
            "LODSliderBG",
            "LODSliderRange",
            "LODSliderRangeSelected",
            "LODSliderText",
            "LODSliderTextSelected",
            "MeBlendBackground",
            "MeBlendPosition",
            "MeBlendTriangleLeft",
            "MeBlendTriangleRight",
            "MeLivePlayBackground",
            "MeLivePlayBar",
            "MeTimeLabel",
            "MeTransBGOver",
            "MeTransitionBack",
            "MeTransitionBlock",
            "MeTransitionHandleLeft",
            "MeTransitionHandleLeftPrev",
            "MeTransitionHandleRight",
            "MeTransitionHead",
            "MeTransitionSelect",
            "MeTransitionSelectHead",
            "MeTransOff2On",
            "MeTransOffLeft",
            "MeTransOffRight",
            "MeTransOn2Off",
            "MeTransOnLeft",
            "MeTransOnRight",
            "MeTransPlayhead",
            "MiniBoldLabel",
            "minibutton",
            "minibuttonleft",
            "minibuttonmid",
            "minibuttonright",
            "MiniLabel",
            "MiniLabelRight",
            "MiniMinMaxSliderHorizontal",
            "MiniMinMaxSliderVertical",
            "MiniPopup",
            "MiniPullDown",
            "MiniPullDownLeft",
            "MiniTextField",
            "MiniToolbarButton",
            "MiniToolbarButtonLeft",
            "MiniToolbarPopup",
            "MinMaxHorizontalSliderThumb",
            "NotificationBackground",
            "NotificationText",
            "ObjectField",
            "ObjectFieldThumb",
            "ObjectFieldThumbOverlay",
            "ObjectFieldThumbOverlay2",
            "ObjectPickerBackground",
            "ObjectPickerGroupHeader",
            "ObjectPickerLargeStatus",
            "ObjectPickerPreviewBackground",
            "ObjectPickerResultsEven",
            "ObjectPickerResultsGrid",
            "ObjectPickerResultsGridLabel",
            "ObjectPickerResultsOdd",
            "ObjectPickerSmallStatus",
            "ObjectPickerTab",
            "ObjectPickerToolbar",
            "OL box",
            "OL box NoExpand",
            "OL Elem",
            "OL EntryBackEven",
            "OL EntryBackOdd",
            "OL header",
            "OL Label",
            "OL Minus",
            "OL Plus",
            "OL TextField",
            "OL Title",
            "OL Title TextRight",
            "OL Titleleft",
            "OL Titlemid",
            "OL Titleright",
            "OL Toggle",
            "OL ToggleWhite",
            "PaneOptions",
            "PlayerSettingsLevel",
            "PlayerSettingsPlatform",
            "Popup",
            "PopupBackground",
            "PopupCurveDropdown",
            "PopupCurveEditorBackground",
            "PopupCurveEditorSwatch",
            "PopupCurveSwatchBackground",
            "PR DigDownArrow",
            "PR Insertion",
            "PR Label",
            "PR Ping",
            "PR TextField",
            "PreBackground",
            "PreButton",
            "PreferencesKeysElement",
            "PreferencesSection",
            "PreferencesSectionBox",
            "PreHorizontalScrollbar",
            "PreHorizontalScrollbarThumb",
            "PreLabel",
            "PreOverlayLabel",
            "PreSlider",
            "PreSliderThumb",
            "PreToolbar",
            "PreToolbar2",
            "PreVerticalScrollbar",
            "PreVerticalScrollbarThumb",
            "ProfilerBadge",
            "ProfilerLeftPane",
            "ProfilerLeftPaneOverlay",
            "ProfilerPaneLeftBackground",
            "ProfilerPaneSubLabel",
            "ProfilerRightPane",
            "ProfilerScrollviewBackground",
            "ProfilerSelectedLabel",
            "ProgressBarBack",
            "ProgressBarBar",
            "ProgressBarText",
            "ProjectBrowserBottomBarBg",
            "ProjectBrowserGridLabel",
            "ProjectBrowserHeaderBgMiddle",
            "ProjectBrowserHeaderBgTop",
            "ProjectBrowserIconAreaBg",
            "ProjectBrowserIconDropShadow",
            "ProjectBrowserPreviewBg",
            "ProjectBrowserSubAssetBg",
            "ProjectBrowserSubAssetBgCloseEnded",
            "ProjectBrowserSubAssetBgDivider",
            "ProjectBrowserSubAssetBgMiddle",
            "ProjectBrowserSubAssetBgOpenEnded",
            "ProjectBrowserSubAssetExpandBtn",
            "ProjectBrowserTopBarBg",
            "QualitySettingsDefault",
            "Radio",
            "RightLabel",
            "RL Background",
            "RL DragHandle",
            "RL Element",
            "RL Footer",
            "RL FooterButton",
            "RL Header",
            "SC ViewAxisLabel",
            "SC ViewLabel",
            "SceneViewOverlayTransparentBackground",
            "ScriptText",
            "SearchCancelButton",
            "SearchCancelButtonEmpty",
            "SearchModeFilter",
            "SearchTextField",
            "SelectionRect",
            "ServerChangeCount",
            "ServerUpdateChangeset",
            "ServerUpdateChangesetOn",
            "ServerUpdateInfo",
            "ServerUpdateLog",
            "ShurikenCheckMark",
            "ShurikenEffectBg",
            "ShurikenEmitterTitle",
            "ShurikenLabel",
            "ShurikenLine",
            "ShurikenMinus",
            "ShurikenModuleBg",
            "ShurikenModuleTitle",
            "ShurikenObjectField",
            "ShurikenPlus",
            "ShurikenPopUp",
            "ShurikenToggle",
            "ShurikenValue",
            "SimplePopup",
            "SliderMixed",
            "StaticDropdown",
            "sv_iconselector_back",
            "sv_iconselector_button",
            "sv_iconselector_labelselection",
            "sv_iconselector_selection",
            "sv_iconselector_sep",
            "sv_label_0",
            "sv_label_1",
            "sv_label_2",
            "sv_label_3",
            "sv_label_4",
            "sv_label_5",
            "sv_label_6",
            "sv_label_7",
            "TabWindowBackground",
            "Tag MenuItem",
            "Tag TextField",
            "Tag TextField Button",
            "Tag TextField Empty",
            "TE NodeBackground",
            "TE NodeBox",
            "TE NodeBoxSelected",
            "TE NodeLabelBot",
            "TE NodeLabelTop",
            "TE PinLabel",
            "TE Toolbar",
            "TE toolbarbutton",
            "TE ToolbarDropDown",
            "TimeScrubber",
            "TimeScrubberButton",
            "TL BaseStateLogicBarOverlay",
            "TL EndPoint",
            "TL InPoint",
            "TL ItemTitle",
            "TL LeftColumn",
            "TL LeftItem",
            "TL LogicBar 0",
            "TL LogicBar 1",
            "TL LogicBar parentgrey",
            "TL LoopSection",
            "TL OutPoint",
            "TL Playhead",
            "TL Range Overlay",
            "TL RightLine",
            "TL Selection H1",
            "TL Selection H2",
            "TL SelectionBarCloseButton",
            "TL SelectionBarPreview",
            "TL SelectionBarText",
            "TL SelectionButton",
            "TL SelectionButton PreDropGlow",
            "TL SelectionButtonName",
            "TL SelectionButtonNew",
            "TL tab left",
            "TL tab mid",
            "TL tab plus left",
            "TL tab plus right",
            "TL tab right",
            "ToggleMixed",
            "Toolbar",
            "toolbarbutton",
            "ToolbarDropDown",
            "ToolbarPopup",
            "ToolbarSeachCancelButton",
            "ToolbarSeachCancelButtonEmpty",
            "ToolbarSeachTextField",
            "ToolbarSeachTextFieldPopup",
            "ToolbarSearchField",
            "ToolbarTextField",
            "Tooltip",
            "U2D.createRect",
            "U2D.dragDot",
            "U2D.dragDotDimmed",
            "VCS_StickyNote",
            "VCS_StickyNoteArrow",
            "VCS_StickyNoteLabel",
            "VCS_StickyNoteP4",
            "VerticalMinMaxScrollbarThumb",
            "VisibilityToggle",
            "WhiteBoldLabel",
            "WhiteLabel",
            "WhiteLargeLabel",
            "WhiteMiniLabel",
            "WinBtnCloseActiveMac",
            "WinBtnCloseMac",
            "WinBtnCloseWin",
            "WinBtnInactiveMac",
            "WinBtnMaxActiveMac",
            "WinBtnMaxMac",
            "WinBtnMaxWin",
            "WinBtnMinActiveMac",
            "WinBtnMinMac",
            "WinBtnMinWin",
            "WindowBackground",
            "WindowBottomResize",
            "WindowResizeMac",
            "Wizard Box",
            "Wizard Error",
            "WordWrapLabel",
            "WordWrappedLabel",
            "WordWrappedMiniLabel",
            "WrappedLabel",
        };

        private Vector2 mScrollPos;

        [MenuItem("Tools/GUIStyle 样例窗口")]
        private static void Example()
        {
            GetWindow<GUIStyleExampleWindow>(true);
        }

        private void OnGUI()
        {
            mScrollPos = EditorGUILayout.BeginScrollView(mScrollPos);
            foreach (var n in mList)
            {
                EditorGUILayout.BeginHorizontal(GUILayout.Height(48));
                EditorGUILayout.SelectableLabel(n);
                EditorGUILayout.Toggle(false, n);
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndScrollView();
        }
    }
}